JS는 싱글 스레드 언어인데 어떻게 동시에 여러 작업을 수행하나요
❓질문
자바스크립트는 싱글 스레드 언어인데 어떻게 동시에 여러 작업을 수행하나요?
💡 조사하기전 내가 알고 있던 내용
자바스크립트는 싱글스레드 언어입니다. 즉 한번에 하나의 일만 처리를 할수있습니다.
자바스크립트 엔진안에는 메모리힙과 콜 스택이 있습니다 이때 우리가 할일에 대한 것들에 대한 정보는 콜 스택에 차곡차곡 쌓입니다. 그리고 콜 스택에 빠져나오는 순서대로 일을 처리하다가 비동기 작업을 만나면 이 작업을 Web API로 위임을 합니다 그리고 Web API로 간 비동기 작업이 완료되면 다시 태스크 큐로 들어가 콜 스택이 비어질때 하나씩 콜스택에 다시 담겨 실행하게 됩니다 이 매커니즘때문에 우리는 자바스크립트가 싱글스레드 언어임에도 불구하고 비동기 작업을 처리할수있습니다.
🏫 정리한 내용
자바스크립트는 브라우저의 Web API나 Node의 libuv, 이벤트 루프 , 태스크 큐를 활용한다는 키워드 위주로 설명을하면 좋을거같습니다.